package com.sakiko.service.impl;

import com.sakiko.service.StudentService;
import com.sakiko.service.TopService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
public class TopServiceImpl implements TopService {

    @Autowired
    private StudentService studentService;

    @Transactional
    @Override
    public void change() {
        studentService.modifyAgeById();
        System.out.println("-----------------");
        studentService.modifyGenderById();
    }
}
/* spring-tx 内容总结
1、事务的类型
    a.手动添加事务 (编程式事务)  connection.commit ...
    b.配置添加事务 (声明式事务) @transactional transactionManager
2、事务管理器
    具体存储事务实现代码的工具类
    spring-tx框架是为世界上所有的持久层技术都可以添加事务代理！但是他又不能将事务的具体实现固定
    spring-tx将事物的实现提取出去了，提取到事务管理器类中！
    开发中根据自己持久层框架技术，将对应的事务管理器加入到 ioc容器中即可！！！
    接口: TransactionManager  PlatformTransactionManager [规定了事务的三个方法 getTransaction、commit、rollback]
    实现: DataSourceTransactionManager HibernateTransactionManager etc...
3、事务添加基本步骤
    步骤 1: 导入依赖 详见 pom.xml
    步骤 2: 编写核心业务逻辑 StudentServiceImpl
    步骤 3: 事务准备工作 (事务管理器、开启事务支持) javaConfig / spring-tx.xml
    步骤 4: 添加事务配置 @Transactional
    步骤 5: 考虑细节问题
4、事物的细节属性   详见 com.sakiko.service.impl.StudentServiceImpl
 */
